<?php

App::uses('AppController', 'Controller');

/**
 * Materias Controller
 *
 * @property Materia $Materia
 */
class AlumnosParalelosController extends AppController
{

    public $uses = array(
        'AlumnosParalelo',
        'Alumno',
        'Paralelo',
        'Tiposparciale',
        'AlumnosParciale',
        'Nota',
        'Materia',
        'Asistencia',
        'Horario',
        'Periodo',
        'Ciclo',
        'Turno', 
        'Materiaspromedio'
        );
    public $components = array('DebugKit.Toolbar');
    public $layout = 'colegio';

    public function beforeFilter()
    {
        parent::beforeFilter();
        $this->Auth->allow('*');
        //debug($this->Auth);
    }

    public function index()
    {
        $alumnosParalelos = $this->AlumnosParalelo->find('all', array('recursive' => 0));
        // debug($alumnosParalelos);
        $this->set(compact('alumnosParalelos'));
    }

    public function listalumnos($idAlumno = null)
    {
        $alumnosParalelos = $this->AlumnosParalelo->find('all', array('recursive' => 0,
                'conditions' => array('AlumnosParalelo.paralelo_id' => $idAlumno)));
        $this->set(compact('alumnosParalelos'));
    }

    public function listalumnosparalelos($idAlumno = null)
    {

        $alumnosParalelos = $this->AlumnosParalelo->find('all', array('recursive' => 1,
                'conditions' => array('AlumnosParalelo.alumno_id' => $idAlumno)));
        //debug($alumnosParalelos);
        $this->set(compact('alumnosParalelos'));

    }

    function insertar()
    {
        if (!empty($this->data)) {
            if ($this->AlumnosParalelo->save($this->data)) {

                $this->Session->setFlash('Se Guardo Correctamente!!!');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Error al Guardar consulte con el Administrador de Sistema');
            }
        }
        $dalumno = $this->Alumno->find('list', array('fields' => 'Alumno.nombre'));
        $this->set(compact('dalumno'));
        $dparalelo = $this->Paralelo->find('list', array('fields' => 'Paralelo.nombre'));
        $this->set(compact('dparalelo'));
    }

    function editar($id = null)
    {
        $this->AlumnosParalelo->id = $id;
        if (!$id) {
            $this->Session->setFlash('No Existe el tipo Alumno Paralelo');
            $this->redirect(array('action' => 'index'));
        }
        if (empty($this->data)) {
            $this->data = $this->AlumnosParalelo->read();
        } else {
            if ($this->AlumnosParalelo->save($this->data)) {
                $this->Session->setFlash('Se Guardo Correctamente el Alumno Paralelo');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Error al guardar el Alumno Paralelo');
            }
        }
        $dalumno = $this->Alumno->find('list', array('fields' => 'Alumno.nombre'));
        $this->set(compact('dalumno'));
        $dparalelo = $this->Paralelo->find('list', array('fields' => 'Paralelo.nombre'));
        $this->set(compact('dparalelo'));
    }

    function eliminar($id = null)
    {
        $this->AlumnosParalelo->id = $id;
        $this->data = $this->AlumnosParalelo->read();
        if (!$id) {
            $this->Session->setFlash('No existe el Alumno Paralelo a Eliminar');
            $this->redirect(array('action' => 'index'));
        } else {
            if ($this->AlumnosParalelo->delete($id)) {
                $this->Session->setFlash('Se elimino el Alumno Paralelo ' . $this->data['AlumnosParalelo']['nombre']);
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Error al eliminar');
            }
        }
    }

    public function alumnosprofesor($idParalelo = null, $idMateria = null)
    {
        $materia = $this->Materia->find('first', array('recursive' => -1, 'conditions' =>
                array('Materia.id' => $idMateria)));
        
        $alumnos = $this->AlumnosParalelo->find('all', array('recursive' => 0,
                'conditions' => array('AlumnosParalelo.paralelo_id' => $idParalelo),
                'order'=>array('Alumno.ap_paterno ASC', 'Alumno.ap_materno ASC', 'Alumno.nombre ASC')
                ));
        //debug($alumnos);exit;
        $c = 0;
        $arrayAlumnos = array();

        //debug($alumnos);
        foreach ($alumnos as $a) {
            $arrayAlumnos[$c] = $a['Alumno']['id'];
            $c++;
        }


        $tiposParciales = $this->Tiposparciale->find('all', array('recursive' => 1));
        //debug($tiposParciales);exit;
        $idProfesor = $this->Session->read('Auth.User.profesore_id');
        //debug($this->Auth);
        //debug($materia);exit;
        $gestion = date("Y");


        if (!empty($this->request->data)) {
            //debug($this->request->data);exit;

            $gestion = date('Y');

            $notasAlumnos = $this->request->data;

            $ciclo = $this->AlumnosParciale->find('first', array('recursive' => -1,
                    'conditions' => array(
                    'AlumnosParciale.gestion' => $gestion,
                    'AlumnosParciale.profesore_id' => $idProfesor,
                    'AlumnosParciale.materia_id' => $idMateria), 
                    'order'=>array('AlumnosParciale.id DESC')
                    ));
            
            
            if (empty($ciclo)) {
                $cicloActual = $this->Ciclo->find('first', array('conditions' => array('Ciclo.gestion' =>
                            $gestion), 'order' => 'Ciclo.orden ASC'));
                            
                $cicloActual = $cicloActual['Ciclo']['id'];
                
            } else {

                $cicloActual = $ciclo['AlumnosParciale']['ciclo_id'];
                
                $ultimoCiclo = $this->Ciclo->find('first', array('conditions' => array('Ciclo.gestion' =>
                            $gestion), 'order' => array('Ciclo.id DESC')));
                
                $idUltimoCiclo = $ultimoCiclo['Ciclo']['id'];
                
                if ($idUltimoCiclo == $cicloActual) {
                    $this->Session->setFlash('No puede registrar mas notas en esta gesti&oacute;n', 'msgbueno');
                    $this->redirect(array('controller'=>'profesores', 'action' => 'vernotas', $idMateria, $idParalelo, $gestion));
                } else {


                    $this->Ciclo->id = $cicloActual;
                    
                    $ciclocorresponde = $this->Ciclo->find('neighbors', array(
                        'conditions' => array('Ciclo.gestion' => $gestion),
                        'order' => 'Ciclo.orden Asc',
                        'recursive' => -1));
                        
                    $cicloActual = $ciclocorresponde['next']['Ciclo']['id'];

                }
            }

            /* debug($cicloActual);
            debug($arrayAlumnos);
            debug($notasAlumnos);
            */
            foreach ($arrayAlumnos as $aa) {
                //debug($notasAlumnos[$aa]);
                foreach ($notasAlumnos[$aa] as $a) {

                    $this->request->data = "";
                    
                    $this->AlumnosParciale->create();
                    
                    $this->request->data['AlumnosParciale']['ciclo_id'] = $cicloActual;
                    $this->request->data['AlumnosParciale']['alumno_id'] = $a['alumno_id'];
                    $this->request->data['AlumnosParciale']['nota'] = $a['nota'];
                    $this->request->data['AlumnosParciale']['dps'] = $a['dps'];
                    $this->request->data['AlumnosParciale']['profesore_id'] = $a['profesore_id'];
                    $this->request->data['AlumnosParciale']['materia_id'] = $idMateria;
                    $this->request->data['AlumnosParciale']['tiposparciale_id'] = $a['tipoparciale_id'];
                    $this->request->data['AlumnosParciale']['parciale_id'] = $a['parciale_id'];
                    $this->request->data['AlumnosParciale']['gestion'] = $gestion;
                    $this->request->data['AlumnosParciale']['promedio'] = $a['promedio'];
                     $this->request->data['AlumnosParciale']['dps'] = $a['dps'];
                    $this->request->data['AlumnosParciale']['fecha'] = date('Y-m-d');


                    $this->AlumnosParciale->save($this->request->data);
                }

            }
            if($cicloActual == $idUltimoCiclo){
                
                $cantidadCiclos = $this->Ciclo->find('count', array('conditions'=>array('Ciclo.gestion'=>$gestion)));
                
                foreach ($arrayAlumnos as $aa) {
                    
                    $notasAlumno = $this->AlumnosParciale->find('all', array(
                    'conditions'=>array(    
                            'AlumnosParciale.alumno_id'=>$aa, 
                            'AlumnosParciale.gestion'=>$gestion, 
                            'AlumnosParciale.materia_id'=>$idMateria, 
                            'AlumnosParciale.profesore_id'=>$idProfesor,
                            'OR'=>array('AlumnosParciale.promedio !='=>null, 'AlumnosParciale.promedio !='=>0)),
                    'recursive'=>-1
                    ));
                    
                    $sumaPromedios=0;
                    $promedioParcial =0;
                    
                    foreach($notasAlumno as $nota){
                        
                        $promedioParcial = $nota['AlumnosParciale']['promedio'] + $nota['AlumnosParciale']['dps'];
                        $sumaPromedios = $sumaPromedios + $promedioParcial;
                    }
                    
                    $promedioMateria = $sumaPromedios / $cantidadCiclos;
                    
                    $this->request->data ="";
                    
                    $this->Materiaspromedio->create();
                    
                    $this->request->data['Materiaspromedio']['materia_id'] = $idMateria;
                    $this->request->data['Materiaspromedio']['paralelo_id'] = $idParalelo;
                    $this->request->data['Materiaspromedio']['profesore_id'] = $idProfesor;
                    $this->request->data['Materiaspromedio']['alumno_id'] = $aa;
                    $this->request->data['Materiaspromedio']['nota'] = $promedioMateria;
                    $this->request->data['Materiaspromedio']['gestion'] = $gestion;
                    
                    $this->Materiaspromedio->save($this->request->data);
                }
            }
            
            $this->Session->setFlash('Notas registradas correctamente!!!', 'msgbueno');
            $this->redirect(array('controller' => 'Principal', 'action' => 'profesores'));

        }
        $this->set(compact('alumnos', 'tiposParciales', 'materia', 'idProfesor',
            'gestion'));
    }

    public function inscribealumno($idAlumno = null, $ultimoNivel)
    {

    }
    public function asistencias($idParalelo = null, $idMateria = null)
    {
        $materia = $this->Materia->find('first', array('recursive' => -1, 'conditions' =>
                array('Materia.id' => $idMateria)));
        $alumnos = $this->AlumnosParalelo->find('all', array('recursive' => 0,
                'conditions' => array('AlumnosParalelo.paralelo_id' => $idParalelo)));
        $c = 0;
        $arrayAlumnos = array();
        //debug($alumnos);
        foreach ($alumnos as $a) {
            $arrayAlumnos[$c] = $a['Alumno']['id'];
            $c++;
        }
        //debug($arrayAlumnos);
        $idProfesor = $this->Session->read('Auth.User.profesore_id');
        //debug($this->Auth);
        //debug($alumnos);
        $this->set(compact('alumnos', 'materia', 'idProfesor'));
        if (!empty($this->data)) {
            //debug($this->data);exit;
            $fecha = $this->data['Asistencia']['fecha'];
            $arreglo_cadena = explode("/", $fecha);
            $fecha = $arreglo_cadena[2] . '-' . $arreglo_cadena[1] . '-' . $arreglo_cadena[0];

            //debug($this->request->data);exit;
            $this->Asistencia->create();

            foreach ($arrayAlumnos as $dato) {

                $this->request->data['Asistencia'][$dato]['fecha'] = $fecha;
                //debug($this->request->data['Asistencia'][$dato]);exit;
                $this->Asistencia->save($this->request->data['Asistencia'][$dato]);
            }

            $this->Session->setFlash('Asistencias registradas correctamente!!!', 'msgbueno');
            $this->redirect(array('controller' => 'Principal', 'action' => 'profesores'));
        }
    }
    public function horario()
    {
        $idProfesor = $this->Session->read('Auth.User.profesore_id');

        $gestion = date("Y");

        $horarios = $this->Horario->find('all', array('conditions' => array('Horario.profesore_id' =>
                    $idProfesor, 'Horario.gestion' => $gestion), 'order' => array('Periodo.periodo',
                    'Horario.dia')));

        $periodos = $this->Periodo->find('all', array('conditions' => array('Turno.gestion' =>
                    $gestion), 'order' => array('Periodo.periodo')));

        $turnos = $this->Turno->find('all', array('conditions' => array('Turno.gestion' =>
                    $gestion)));

        //debug($periodos);exit;
        // debug($horarios);exit;
        $this->set(compact('periodos', 'horarios', 'idProfesor', 'gestion', 'turnos'));
    }


}
